[C++] 单引号和双引号的区别

单引号代表char类型,即单个字符
双引号是字符串类型

C++ 中字符串又分为

- C风格字符串
- C++ 引入的 string 类类型

关于C++字符串可参考 C++ 字符串-菜鸟教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
using namespace std;
int main()
{
char c = 'a';
char ca[] = "a"; //C风格字符串
string str = "a"; //C++ 引入的 string 类类型

cout << sizeof('a') << endl;
cout << sizeof("a") << endl;
cout << sizeof(str) <<endl;
return 0;
}

最终输出的结果为

1
2
3
1
2
8

因为

  • 'a'代表一个字符,只占一个字节
  • "a"相当于{'a', '\0'} 占两个字节, 其中\0(null字符)代表字符串的结尾,如果没有'\0'就变成了字符数组

顾名思义,字符数组就是每个元素都是单个字符(char类型)的数组

那为什么string类型的占8个字节呢?
查了一下发现g++的版本不同会使得string所占的字节数也不同

在g++ 4.8.4中string占8个字节,在g++5.4.0中string占32个字节